package licode.unisop.client.api.auth;

import licode.unisop.client.info.*;
import licode.unisop.client.vo.SopUrlMatch;
import licode.unisop.client.vo.SopUserAssets;
import licode.unisop.client.vo.SopUserType;
import licode.unisop.client.vo.SopVerifyCode;

/**
 * 定义认证中心查询相关接口
 *
 * @author WR
 */
public interface SopResourceQuery {
    /**
     * 获取用户的类型
     * @param userFind 平台标识
     * @return 用户类型
     */
    SopUserType getUserType(SopPlatUserFind userFind);

    /**
     * 返回指定token的详情
     * @param tokenInfo 用户信息
     * @return 资源列表
     */
    SopUserAssets getUserAssets(SopTokenInfo tokenInfo);

    /**
     * 判断登录token是否拥有指定的地址权限
     * @param info 登录后返回的访问token
     * @return 如果拥有指定地址权限返回true；否则返回false
     */
    SopUrlMatch matchUrl(SopUrlInfo info);
    SopUrlMatch ssoMatchUrl(SopUrlInfo info);

    /**
     * 判断登录token是否拥有指定的角色
     * @param roleInfo 登录后返回的访问token
     * @return 如果拥有指定角色返回0；没有登录返回1；其它小于0
     */
    SopVerifyCode hasRole(SopRoleInfo roleInfo);

    /**
     * 判断登录token是否拥有指定的权限
     * @param permitInfo 登录后返回的访问token
     * @return 如果拥有指定权限返回0；没有登录返回1；其它小于0
     */
    SopVerifyCode hasPermit(SopPermitInfo permitInfo);

    SopVerifyCode hasAuthority(SopAuthorityIn info);
}
